#include"queue.h"
#include<stdlib.h>
#include<stdio.h>
#include<stdbool.h>
//初始化
void initQueue(queue_t *pqueue)
{
	if (pqueue == NULL) {
		return;
	}
	pqueue->_pHead = NULL;
	pqueue->_pEnd = NULL;
	pqueue->_size = 0;
}
//入队
int enQueue(queue_t *pqueue, int netfd, int flag)
{
	if (pqueue == NULL) {
		return -1;
	}
	qnode_t *newNode = (qnode_t *)malloc(sizeof(qnode_t));
	if (newNode == NULL) {
		return -1;
	}
	newNode->_netfd = netfd;
	newNode->_flag = flag;
	newNode->_pNext = NULL;

	if (pqueue->_pHead == NULL) {
		pqueue->_pHead = newNode;
		pqueue->_pEnd = newNode;
	} else {
		pqueue->_pEnd->_pNext = newNode;
		pqueue->_pEnd = newNode;
	}

	pqueue->_size++;
	return 0;
}
//出队
int deQueue(queue_t *pqueue)
{
	if (pqueue == NULL || pqueue->_pHead == NULL) {
		return -1;
	}
	qnode_t *temp = pqueue->_pHead;
	pqueue->_pHead = pqueue->_pHead->_pNext;
	if (pqueue->_pHead == NULL) {
		pqueue->_pEnd = NULL;
	}
	int netfd = temp->_netfd;
	int flag = temp->_flag;
	free(temp);
	pqueue->_size--;
	return netfd;
}
//判空
bool isEmpty(queue_t *pqueue)
{
	if (pqueue == NULL) {
		return true;
	}
	return pqueue->_pHead == NULL;
}

//test
// int main()
// {
// 	queue_t queue;
// 	initQueue(&queue);

// 	enQueue(&queue, 1, 0); // 下载
// 	enQueue(&queue, 2, 1); // 上传
// 	enQueue(&queue, 3, 0); // 下载

// 	while (!isEmpty(&queue)) {
// 		int netfd = deQueue(&queue);
// 		printf("Dequeued netfd: %d\n", netfd);
// 	}

// 	return 0;
// }